Release 10.1A: OpenEdge Development:
Progress Dynamics Advanced Development
Client cache
As a Progress Dynamics run-time client or WebClient session runs, object descriptions are cached on the client in temp-tables. The data in these tables is then accessed by the drivers, such as the dynamic window procedure
rydyncontw.wthat realize the client portion of the application at run time.This section summarizes the temp-tables that make up the client cache.
Cache_Object table
This temp-table contains information about master object records as well as contained instances. This table contains information about the static (physical) object required to instantiate a dynamic object, the logical object name and other data, such as the result code, run attribute, etc. There can only be one record in the cache for any given master object (and thus for its contained instances) at any given time. This table is (roughly) a combination of the information from the
ryc_smartobjectandryc_object_instanceRepository tables.The
cache_Objecttable is joined to records in the next four tables,cache_ObjectPage,cache_ObjectLink,cache_ObjectPageInstance, andcache_ObjectUIEvent, using the key fieldtRecordIdentifier.The following code sample shows a slightly simplified definition of the
cache_Objecttemp-table (without formats and indexes). All the cache temp-tables are defined in the include filery/app/ryobjretri.i, as shown:
A few fields merit additional explanation:
tRecordIdentifier— This field is the uniqueDECIMALkey for each object record in the temp-table.tContainerRecordIdentifier— This field holds the Record Identifier of thecache_Objectrecord that acts as a container to the current object record.tMasterRecordIdentifier— This is the Record Identifier of thecache_Objectrecord that is the master of the current instance record.tClassBufferHandle— This is the buffer handle that points to the class temp-table containing the attributes for this object.tSdoSmartObjectObj— This is the design-time SDO associated with the object, if any.tInheritsFromClasses— This field stores a list of the class names of all classes that this class inherits from.Cache_ObjectPage table
This temp-table contains information about pages within a container. It uses the information in the Repository database table
ryc_page. This is the temp-table definition for this table:
The
tPageObjobject ID is used for finding this record from the page object instance.Cache_ObjectLink table
The temp-table contains link information derived from this Repository table
(ryc_smartlink):
Cache_ObjectPageInstance table
This temp-table contains information about object instances on a given page derived from the Repository table
ryc_page_object. This is the definition of the table:
Cache_ObjectUIEvent table
This temp-table contains information about UI events derived from
ryc_ui_event:
The fields are described below:
Cache_<classname> tables
There is a dynamic temp-table containing attribute information for each defined class or object type in the Repository, with the name
class_<classname>. Each of these temp-tables has a field for each attribute defined for the class, whose initial value is the default attribute value defined for the attribute for that class, using the Attribute Value Maintenance and Object Type Maintenance utilities. These temp-tables are dynamic because they are defined at run time based on the set of attributes associated with each class. When you use the framework utilities to add attributes to a class and give them an initial value for the class, it is this information that the framework uses to create the temp-table for each class at run time. In this way attributes can be added to the classes in the framework without the need to define them anywhere in source code or to recompile any procedures in order for them to become a part of all the dynamic objects in that class.See the "Using the Profile Manager" section for an example of how you can define new attributes and associate them with object types.
ttClass table
This temp-table stores the names of all the classes (object types) and their associated temp-table names, along with the handles to the default buffers of the temp-tables that have been created to store each class’s default attributes. As described above, a separate dynamic temp-table is defined for each class, containing a separate field for every attribute in the class, plus some extra control fields. The table for each class is called
cache_ +the class name, for example:cache_dynview.The
ttClasstable is updated in the functioncreateClassCacheRecordin the Repository Manager, which is called from thecreateClassCacheprocedure, which caches the attribute values for an object type.Record identifiers
Every
cache_Objectrecord has a unique key, calledtRecordIdentifier. ThisDECIMALvalue is used as a foreign key to join the object record to other tables. This value is also stored at run time in the object property calledInstanceID.The
tContainerRecordIdentifierfield in thecache_Objecttable contains the Record Identifier of thecache_Objectrecord that represents the container object on which the currentcache_Objectis an instance. This is zero when thecache_Objectrepresents a master object.The
tMasterRecordIdentifierfield in thecache_Objecttable is the Record Identifier of thecache_Objectrepresenting the master object of thiscache_Objectrecord. This value is the same as the Record Identifier if this cache record represents a master object.
|
Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095 |